草庐IT

ES 脚本

全部标签

javascript - ES6 Promise.all() 错误句柄 - 是否需要 .settle()?

这个问题在这里已经有了答案:Waituntilallpromisescompleteevenifsomerejected(20个回答)6年前关闭。假设我有一个处理两个promise的Promise.all()。如果一个promise产生错误,但另一个promise解决了,我希望能够在Promise.all()解决后根据情况处理错误。ES6Promises缺少解决方法,我假设是有充分理由的。但我不禁认为.settle()方法会让我更容易解决这个问题。我是以错误的方式解决这个问题,还是用一种解决方法扩展ES6Promise是正确的做法?我如何考虑使用.settle()的一个例子:Promi

javascript - Google Apps 脚本中的集合和数据结构

GoogleSheets的脚本编辑器好像是JavaScript的一个变体,但我不知道如何用它来处理Sets、字典等。我已经知道如何使用JSArrays,但Arrays不是足以完成我的任务。通过正常方式声明一个Set(即varcategoryOptions=newSet(String);给我一个“Setisnotdefined”错误。使用varcategoryOptions={};不允许我使用任何内置的Set函数,例如add。相反,我得到:“TypeError:无法在对象[objectObject]中找到函数添加。”有什么专业建议吗? 最佳答案

javascript - react 中的脚本加载

我想从CDN加载脚本,然后在React中执行该脚本公开的函数:componentWillMount(){console.log('componentWillMountiscalled');constscript=document.createElement('script');script.src='https://foo.azurewebsites.net/foo.js';document.body.appendChild(script);}componentDidMount(){console.log('componentDidMountiscalled');window.foo.

javascript - Chrome 扩展内容脚本可以访问 window.opener 吗?

在我的扩展程序中,我试图确定一个新选项卡是否是由另一个选项卡作为弹出窗口创建的,如果是,是哪个选项卡。我想我可以使用内容脚本中的window.opener来帮助解决这个问题。但看起来window.opener在内容脚本中无法正常工作。当我手动创建一个选项卡时,它的window.opener正如预期的那样为null。当一个选项卡被另一个选项卡创建为弹出窗口时,它的window.opener是未定义的。我可以由此推断该选项卡是作为弹出窗口创建的,但我无法使用它来确定哪个选项卡创建了新选项卡。这是一个已知问题吗?有人知道任何解决方法吗? 最佳答案

javascript - 当 AJAX 更改 URL 而不重新加载页面时,如何重新加载 Greasemonkey 脚本?

我有一个应用程序,我正在尝试为其创建Greasemonkey脚本。它利用大量jQuery和AJAX来动态加载内容。我注意到每次加载新项目时URL确实发生变化,即使页面没有刷新也是如此。是否可以在页面上放置一个监听器,以便在每次URL更改时重新启动脚本? 最佳答案 如何执行此操作取决于站点/应用程序以及您尝试执行的操作。这是您的选择,首先是最简单和最可靠的:不要试图捕捉URL的变化。UsecallstowaitForKeyElements()toactonthepartsofthevariouspagesthatyouwantedto

javascript - 仅在尚未加载 js 脚本时才加载它,然后仅加载一次

我一直试图只加载一次大型js脚本。我不会在页面加载时加载它,因为那时不需要它并且会减慢页面加载速度。所以我一直在尝试使用jQuery的$.getScript和Modernizr.load加载它(因为我已经在使用Modernizr了)。我已经尝试遍历所有元素并检查它们的src属性并查看此脚本是否是其中之一,但每次我运行测试时仍然会加载它们。我还尝试在脚本的开头将一个全局变量设置为true并检查它是否已设置并且每次检查时它仍然加载。这是我在那个例子中所做的:Modernizr.load({test:if(window.flag===undefined),yep:'conversation.

javascript - 等价于 ES6 中的 Prototype

我从ES6开始,具有JavaScript背景。我有个问题。我有一个如下所示的ES6类:classUser{constructor(){}doSomething(){}}我的问题是doSomething方法是否在我们每次实例化该对象时创建?在以前的JS中,我们可以把doSomething拿出来,用“prototype”创建,保证doSomething只创建一次,而不是每次实例化对象的时候。但是,我确信在ES6中实现相同效果的正确方法。任何帮助将不胜感激。 最佳答案 Myquestionsisdoes"doSomething"metho

javascript - ES6 参数的默认值

这是es6中参数的默认值吗?functionlist({skip=0,limit=50}={}){}上面的代码是做什么的?如果是list(skip=0,limit=50)我能理解,但现在我很困惑。 最佳答案 那个函数有destructuring和defaultparameters混合在一起。根据函数签名,我们可以说我们期待一个参数,它应该是一个对象。functionlist(myObject){}如果未传递任何参数(或传递了undefined),我们将默认值设置为一个空对象,{}。functionlist(myObject={}){

javascript - 如何自动停止在后台运行的npm脚本

我使用的是npm脚本,我有一些脚本应该并行运行。我有这样的东西:...scripts:{"a":"taskA&","preb":"npmruna","b":"taskB"}...这很好!但是我想在taskB完成后自动终止运行后台的taskA。我该怎么做?谢谢! 最佳答案 我不认为npm是管理进程之间复杂关系的最佳工具。创建一个使用Node的child_process的Node脚本会更好。模块来管理协同进程的启动和终止,可能使用spawn.话虽如此,本着始终尝试提供直接、可用的答案的精神..您可以像这样构造您的npm脚本(假设bash

javascript - es6导入three.js

我的es6工作流程使用babel和babel-plugin-transform-es2015-modules-system.js来仅转换模块导入/导出以便与system.js一起使用。我只是对所有es6功能使用“绿色”浏览器,除了模块的导入/导出..这是whatwg标准,因此不是“es6”。这适用于遗留(非es6)库,我可以“导入”我需要的所有npm包。不知何故,babel,只有babel模块转换,而system.js神奇地工作。three.js除外。我尝试了所有三个版本:three.js、three.min.js和three.modules.js。前两个静默失败,导致“未定义”模块。